package group.anagrams;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * @Time 2019/12/29
 * @author 王光浩
 * @Need 给一组字符串，对字符串中的同字母不同构造的字符串进行分组，将所这样的字符串放在一组。
 * @Thinking 使用HasHMap，对自己的方法一进行了简化。这样使得效率变得更高
 */
public class MyMethodOneImprove {
	public List<List<String>> groupAnagrams(String[] strs) {
		if(strs.length==0)return new ArrayList();
		String tem;
		Map<String,List<String>> hashMap=new HashMap<String,List<String>>(); //将所有同母异构的字符串存放在HashMap中
		for(String s:strs) {
			//先将字符串进行排序
			char[] sort=s.toCharArray();
			Arrays.sort(sort);
			tem=String.valueOf(sort);
			//将字符串加入到HashMap中
			if(!hashMap.containsKey(tem))hashMap.put(tem, new LinkedList<String>());
			hashMap.get(tem).add(s);			
		}
		return new ArrayList(hashMap.values());
	}

}
